Information Processing Apparatus and Driver

ABSTRACT

According to one embodiment, an information processing apparatus includes a memory includes a buffer area, a first storage, a second storage and a driver. Controlling the first and second external storages, the driver comprises a cache reservation module configured to reserve a cache area in the memory. The cache area is logically between the buffer area and the first external storage and between the buffer area and the second external storage. The driver being configured to use the cache area, secured on the memory by the cache reservation module, as a primary cache for the second external storage and a cache for the first external storage, and uses part or the entire first external storage as a secondary cache for the second external storage. The buffer area is reserved in order to transfer data between the driver and a host system that requests for data writing and data reading.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation application that is based upon andclaims the benefit of priority from U.S. application Ser. No.13/079,610, now U.S. Pat. No. ______, which is based upon and claims thebenefit of priority from Japanese Patent Application No. 2010-111281,filed May 13, 2010; the entire contents of which are incorporated hereinby reference.

FIELD

Embodiments described herein relate generally to an informationprocessing apparatus such as a personal computer that incorporates, forexample, a solid state drive (SSD) and a hard disk drive (HDD), usingthe SSD as a cache for the HDD thereby to increase the speed ofaccessing to the HDD, and also to a driver that operates in theinformation processing apparatus.

BACKGROUND

In today's information society, great amounts of data are used. HDDs arewidely used as data storage media. This is because each HDD has a largestorage capacity and is relatively inexpensive. Although the HDD canhold much data and is relatively inexpensive, it has a relatively lowaccess speed.

In comparison with the HDD, the flash memory has indeed a high accessspeed. It is, however, expensive. If SSDs each having a flash memory areused in place of all HDDs in a file server that has several HDDs, themanufacturing cost of the file server will greatly increase.

In view of this, various high-speed data storage systems have beenproposed, in which a plurality of data storage media of differentcharacteristics are combined to attain a large storage capacity andachieve a high access speed.

In a data storage system including a first data storage medium that isexpensive and operates at high speed, and a second data storage mediumthat is inexpensive and operates at low speed, the first data storagemedium may be used as a cache for the second data medium. Then, anaccess to the second data storage media can be apparently faster.

In a data storage system having this configuration, the first datastorage medium and the second storage medium are accessed independentlyin most cases. Some measures must therefore be taken to increase thespeed and efficiency of the data transfer between the first and seconddata storage media.

BRIEF DESCRIPTION OF THE DRAWINGS

A general architecture that implements the various features of theembodiments will now be described with reference to the drawings. Thedrawings and the associated descriptions are provided to illustrate theembodiments and not to limit the scope of the invention.

FIG. 1 is an exemplary diagram showing a system configuration of aninformation processing apparatus according to an embodiment.

FIG. 2 is an exemplary conceptual diagram illustrating the operatingprinciple of the HDD/SSD driver (cache driver) incorporated in theinformation processing apparatus according to the embodiment.

FIG. 3 is an exemplary first diagram showing an exemplary existentsector bit map and dirty sector bit map provided in the informationprocessing apparatus according to the embodiment.

FIG. 4 is an exemplary second diagram showing an exemplary existentsector bit map and dirty sector bit map provided in the informationprocessing apparatus according to the embodiment.

FIG. 5 is an exemplary diagram showing an exemplary Dirty flag andPartial flag provided in the information processing apparatus accordingto the embodiment.

FIG. 6 is an exemplary diagram showing an exemplary ownership flagprovided in the information processing apparatus according to theembodiment.

FIG. 7 is an exemplary diagram showing an exemplary write trace areareserved in the information processing apparatus according to theembodiment.

FIG. 8 is an exemplary diagram showing an exemplary area reserved in theinformation processing apparatus, to record the ID data about the SSDand HDD and the number of times the power switch has been closed.

FIG. 9 is an exemplary diagram showing an exemplary pin flag provided inthe information processing apparatus according to the embodiment.

FIG. 10 is an exemplary conceptual diagram explaining how theinformation processing apparatus according to the embodiment reads aminimum amount of data that should be processed to achieve data merging.

FIG. 11 is an exemplary conceptual diagram explaining how theinformation processing apparatus according to the embodiment managesdata in the set associative mode.

DETAILED DESCRIPTION

Various embodiments will be described hereinafter with reference to theaccompanying drawings.

In general, according to one embodiment, an information processingapparatus includes a memory comprising a buffer area, a first storage, asecond storage and a driver. The buffer area is reserved in order totransfer data between the driver and a host system that requests fordata writing and data reading. The driver is configured to write datainto the second storage and read data from the second storage using thefirst external storage as a cache for the second storage. The driver isfurther configured to reserve a cache area in the memory, between abuffer area and the first external storage, and between a buffer areaand the second storage.

FIG. 1 is an exemplary diagram showing a system configuration of aninformation processing apparatus according to an embodiment. Theinformation processing apparatus is implemented as a personal computer.

As shown in FIG. 1, the information processing apparatus includes acentral processing unit (CPU) 11, a memory controller hub (MCH) 12, amain memory 13, an I/O control hub (ICH) 14, a graphics processing unit(GPU, or display controller) 15, a video memory (VRAM) 15A, a soundcontroller 16, a basic input/output system-read only memory (BIOS-ROM)17, an HDD 18, an SSD 19, an optical disc drive (ODD) 20, variousperipheral devices 21, an electrically erasable programmable ROM(EEPROM) 22, and an embedded controller/keyboard controller (EC/KBC) 23.

The CPU 11 is a processor that controls the other components of theinformation processing apparatus, and executes the various programsloaded into the main memory 13 from the HDD 18 or ODD 20. The programsthe CPU 11 may execute include OS 110 that manages resources, an HDD/SSDdriver (cache driver) 120 and various application programs 130 thatoperate under the control of the OS 110. The HDD/SSD driver 120 is aprogram that controls the HDD 18 and the SSD 19. In the informationprocessing apparatus, the SSD 19 is used, either in part or in entirety,as a cache for the HDD 18, thereby to access the HDD 18 faster thanotherwise. The HDD/SSD driver 120 is configured to make the SSD 19function as a cache. The operating principle of the HDD/SSD driver 120will be described below, in detail.

If a part of the SSD 19 is used as a cache for the HDD 18, the otherpart of the SSD 19 is allocated as a data area that the variousapplication programs 130, for example, can use, merely issuing commandsto the SSD 19. If the entire SSD 19 is used as a cache for the HDD 18,the existence of the SSD 19 is concealed to the various applicationprograms 130, etc.

The CPU 11 also executes a BIOS stored in the BIOS-ROM 17. The BIOS is ahardware control program. Hereinafter, the BIOS stored in the BIOS-ROM17 will be described as BIOS 17 in some cases.

The MCH 12 operates as a bridge that connects the CPU 11 and the ICH 14,and also as a memory controller that controls the access to the mainmemory 13. The MCH 12 includes the function of performing communicationwith the GPU 15.

The GPU 15 operates as a display controller to control the displayincorporated in or connected to the information processing apparatus.The GPU 15 includes the VRAM 15A and incorporates an accelerator thatgenerates, in place of the CPU 11, the images that the various programsmay display.

The ICH 14 incorporates an integrated device electronics (IDE)controller that controls the HDD 19, SSD 19 and ODD 20. The ICH 14 alsocontrols the various peripheral devices 21 connected to a peripheralcomponent interconnection (PCI) bus. Further, the ICH 14 includes thefunction of performing communication with the sound controller 16.

The sound controller 16 is a sound source device that outputs audio dataitems the various programs may play back, to a speaker or the like whichis either incorporated in or connected to the information processingapparatus.

The EEPROM 22 is a memory device configured to store, for example, IDdata of the information processing apparatus and environment-settingdata. The EC/KBC 23 is a one-chip micro processing unit (MPU) in whichan embedded controller and a keyboard controller are integrated. Theembedded controller manages power. The keyboard controller controls datainput at a keyboard and a pointing device.

FIG. 2 is an exemplary conceptual diagram illustrating the operatingprinciple of the HDD/SSD driver that operates in the informationprocessing apparatus configured as described above.

A user buffer 250 is an area reserved in the main memory 13 by the OS110, which the application programs 130 uses to write data in the HDD 18or read data from the HDD 18. The HDD/SSD driver 120 performs a processof writing data in the HDD 18 so that the data may be written in theuser buffer 250, or a process of storing, in the user buffer 250, thedata read from the HDD 18. That is, the user buffer 250 is a storagearea reserved in the main memory 13 in order to achieve data transferbetween a higher system (host system) and the HDD/SSD driver 120.

As described above, the information processing apparatus uses the SSD 19as a cache for the HDD 18, thereby accessing the HDD 18 faster thanotherwise. Thus, the HDD/SSD driver 120, which controls the HDD 18 andthe SSD 19, reserves an L1 cache area 201 in the main memory 13, betweenthe user buffer 250, on the one hand, and the HDD 18 and SSD 19, on theother. In this embodiment, the SSD 19 is used as a storage medium thatfunctions as a cache for the HDD 18. Nonetheless, a data storage mediumcan of course be used instead, as a nonvolatile cache (NVC).

The HDD/SSD driver 120 manages the L1 cache area 201 in the main memory13, in units of blocks each having a size of, for example, 64 bytes. TheHDD/SSD driver 120 receives a write request or a read request from thehost system, the former requesting data writing into the HDD 18, and thelatter requesting data reading from the HDD 18. The HDD/SSD driver 120divides the write request into write-request segments associated withdata blocks, respectively, and the read request into read-requestsegments associated with data blocks, respectively. The HDD/SSD driver120 issues the write-request segments or read-request segments, asneeded, to the HDD 18 or the SSD 19. In order to manage the data in theL1 cache area 201 and the data in the SSD 19 (used as cache for the HDD18), the HDD/SSD driver 120 reserves a management data storage area 202in the main memory 13.

(Process of Reading Data)

How the HDD/SSD driver 120 reads data in response to a read requestcoming from the host system will be explained first.

If all read data is stored in the L1 cache area 201, the HDD/SSD driver120 stores the data in the L1 cache area 210 into the user buffer 250(a3 in FIG. 2). The HDD/SSD driver 120 then notifies the host systemthat the data reading process has been completed.

If a part of the read data exists in the L1 cache area 201, the HDD/SSDdriver 120 reads the other part of the data, which does not exist in theL1 cache area 201, from the HDD 18 into the L1 cache area 201 (a5 inFIG. 2), and stores, in the user buffer 250, the data request by thehost system (a3 in FIG. 2). At this point, the HDD/SSD driver 120notifies the host system that the data reading process has beencompleted. Thereafter, the HDD/SSD driver 120 reserves a space in theSSD 19 and accumulates the request data in this space (a8 in FIG. 2). Atthe time the data is stored in the user buffer 250, or before the datais accumulated in the SSD 19, the HDD/SSD driver 120 notifies the hostsystem that the data reading process has been completed. The host systemcan therefore go to the next process. Note that the HDD/SSD driver 120reserves a space in the SSD 19, by using an unused area or an area whichdoes not hold data to be written to the HDD 18 and which remains notaccessed longer than any other area. Whenever necessary, the HDD/SSDdriver 120 reserves a space in the SSD 19 in the same way.

If the read data does not exist in the L1 cache area 201, but exists inthe SSD 19, the HDD/SSD driver 120 reads the data stored in the SSD 19and stores the data into the user buffer 250 (a9 in FIG. 2). Then, theHDD/SSD driver 120 notifies the host system that the data readingprocess has been completed.

If the read data does not exist in the L1 cache area 201 and if a partof the data exists in the SSD 19, the HDD/SSD driver 120 reserves aspace in the L1 cache area 201. Then, the HDD/SSD driver 120 reads apart of the data from the SSD 19 and the data from the HDD 18 and storesthem in the space thus reserved in the L1 cache area 201 (a5 and a7 inFIG. 2). To reserve a space in the L1 cache area 201, the HDD/SSD driver120 uses an unused area or an area which does not hold data to bewritten to the HDD18 and not accumulated in the SSD 19 and which remainsnot accessed longer than any other area. Whenever necessary, the HDD/SSDdriver 120 reserve a space in the L1 cache area 201 in the same way. TheHDD/SSD driver 120 stores the data read, i.e., requested data read intothe space reserved in the L1 cache area 201, into the user buffer 250(a3 in FIG. 2). Then, the HDD/SSD driver 120 notifies the host systemthat the data reading process has been completed. Thereafter, theHDD/SSD driver 120 reserves a space in the SSD 19 and accumulates thedata in the space reserved in the SSD 19 (a8 in FIG. 2).

If the read data exists neither in the L1 cache area 201 nor the SSD 19,the HDD/SSD driver 120 reserves a space in the L1 cache area 201 andreads the data stored in the HDD 18 into the space reserved in the L1cache area 201 (a5 in FIG. 2). The HDD/SSD driver 120 stores the dataread into the space reserved in the L1 cache area 201, i.e., datarequested, into the user buffer 250 (a3 in FIG. 2). Then, the HDD/SSDdriver 120 notifies the host system that the data reading process hasbeen completed. Thereafter, the HDD/SSD driver 120 reserves a space inthe SSD 19 and accumulates the data in the space reserved in the SSD 19(a8 in FIG. 2).

(Process of Writing Data)

How the HDD/SSD driver 120 writes data in response to a write requestcoming from the host system will now be explained.

If the data to update exits in the L1 cache area 201 only, not in theSSD 19 at all, the HDD/SSD driver 120 rewrites the data stored in the L1cache area 201 (a4 in FIG. 2) and notifies the host system that the datawriting process has been completed. Thereafter, the HDD/SSD driver 120reserves a space in the SSD 19 and accumulates the rewritten data in thespace reserved in the SSD 19 (a8 in FIG. 2).

If the data to update exits in both the L1 cache area 201 and the SSD19, the HDD/SSD driver 120 invalidates the data in the SSD 19 andrewrites the data stored in the L1 cache area 201 (a4 in FIG. 2). Then,the HDD/SSD driver 120 notifies the host system that the data writingprocess has been completed. Thereafter, the HDD/SSD driver 120 reservesa space in the SSD 19 and accumulates the rewritten data in the spacereserved in the SSD 19 (a8 in FIG. 2).

If the data to update exits in the SSD 19 only, not in the L1 cache area201, the HDD/SSD driver 120 rewrites the data stored in the SSD 19 (a10in FIG. 2). Then, the HDD/SSD driver 120 notifies the host system thatthe data writing process has been completed.

If the data to update exits in neither the SSD 19 nor the L1 cache area201, the HDD/SSD driver 120 reserves a space in the L1 cache area 201and stores the write data, in the space reserved in the L1 cache area201 (a4 in FIG. 2). Then, the HDD/SSD driver 120 notifies the hostsystem that the data writing process has been completed. Thereafter, theHDD/SSD driver 120 reserves a space in the SSD 19 and accumulates thedata stored in the L1 cache area 201, in the space reserved in the SS 19(a9 in FIG. 2).

(Process of Flushing Data)

The HDD/SSD driver 120 performs a process of flushing data,transferring, to the HDD 18, data that has not ever been written in theHDD 18. That is, the HDD/SSD driver 120 writes the data stored in the L1cache area 201 into the HDD 18 (a6 in FIG. 2). The data stored in theSSD 19 is written into the HDD 18, after it has been stored in the L1cache area 201 (a7 and a6 in FIG. 2).

In the information processing apparatus, the SSD 19 is thus used as acache for the HDD 18. The HDD/SSD driver 120, which controls the HDD 18and the SSD 19, reserves an L1 cache area 201 in the main memory 13,between the user buffer 250, on the one hand, and the HDD 18 and SSD 19,on the other. Moreover, the HDD/SSD driver 120 manages the L1 cache area201 in units of blocks, whereby data is transferred between the HDD 18and the SSD 19 at high speed and high efficiency (a3 to a8 in FIG. 2).

The host system may issue a write force-unit access (FUA) request for aprocess of writing data in the write-through mode. In this case, theHDD/SSD driver 120 not only performs the ordinary data writing process,but also issues a write FUA request to the HDD 18, upon receiving thewrite FUA request. Then, the HDD/SSD driver 120 notifies the host systemof the completion of the data writing process after it has received anotification of the data writing process from the HDD 18.

As described above in conjunction with “(Process of Reading Data),” theHDD/SSD driver 120 reads the data stored in the SSD 19 and stores thedata into the user buffer 250 if the data to read does not exist in theL1 cache area 201, but exists in the SSD 19 (a9 in FIG. 2). This datareading process may be performed via the L1 cache area 201. That is, theHDD/SSD driver 120 may first reserve a space in the L1 cache area 201,may then read the data stored in the SSD 19 and store the same into thespace, and may finally store this data into the user buffer 250 (a7 anda3 in FIG. 2). In this case, the data can be read again, as needed, fromthe L1 cache area 201 that achieves higher performance than the SSD 19.

Assume that the data to read does not exist in the L1 cache area 201,but exists in the SSD 19. Then, to read the data stored in the SSD 19and store the same into the user buffer 250, a parameter indicatingwhether the data should be read via the L1 cache area 201 or not may besupplied to the HDD/SSD driver 120. If this is the case, only onedriver, i.e., HDD/SSD driver 120, can cope with both a system in whichdata should not better be read via the L1 cache area 201 (a9 in FIG. 2)and a system in which data should better be read via the L1 cache area201 (a7 and a3 in FIG. 2).

As described above in conjunction with “(Process of Writing Data),” theHDD/SSD driver 120 notifies the host system of the completion of thedata writing process when the data is accumulated in the L1 cache area201 or the SSD 19. This operating mode shall hereinafter be referred toas “write-back (WB) mode.” The information processing apparatus canoperate not only in the WB mode, but also in the write-through (WT)mode. In the WT mode, the HDD/SSD driver 120 may accumulate data in theL1 cache area 201 or the SSD 19 and wire the data into the HDD 18, andmay then notify the host system of the completion of the data writingprocess. Further, a parameter indicating whether the data should bewritten in the WB mode or the WT mode may be supplied to the HDD/SSDdriver 120. How the HDD/SSD driver 120 operates in the WT mode inresponse to a write request coming from the host system in will beexplained below.

The data to update may exist in the L1 cache area 201 only, that is, thedata may exist in the L1 cache area 201 but not in the SSD 19. In thiscase, the HDD/SSD driver 120 rewrites the data in both the L1 cache area201 and the HDD 18 (a4 and a2 in FIG. 2). When the data is written inboth the L1 cache area 201 and the HDD 18, the HDD/SSD driver 120notifies the host system of the completion of the data writing process.When the data is completely rewritten in the HDD 18, the HDD/SSD driver120 reserves a space in the SSD 19, and accumulates the data stored inthe L1 cache area 201, in the space reserved in the SSD 19 (a8 in FIG.2).

The data to update may exist in both the L1 cache area 201 and the L1cache area 201. In this case, the HDD/SSD driver 120 rewrites the datain both the L1 cache area 201 and the L1 cache area 201 (a4, a10 and a2in FIG. 2). When the data is so rewritten, the HDD/SSD driver 120notifies the host system of the completion of the data writing process.As the data is rewritten in the SSD 19, first, HDD/SSD driver 120 mayinvalidate the data stored in the SSD 19. After the data has beenrewritten in the L1 cache area 201 (a4 in FIG. 2), HDD/SSD driver 120may reserve a space in the SSD 19 and may then accumulate the rewrittendata in the space reserved in the SSD 19 (a8 in FIG. 2).

The data to update may exist in the SSD 19 only, that is, it may existin the SSD 19 but not in the L1 cache area 201. If this is the case, theHDD/SSD driver 120 rewrites data in both the SSD 19 and the HDD 18 (a10and a2 in FIG. 2). When the data is rewritten in both the SSD 19 and theHDD 18, the HDD/SSD driver 120 notifies the host system of thecompletion of data rewriting process.

The data to update may exist in neither the L1 cache area 201 nor theSSD 19. In this case, the HDD/SSD driver 120 rewrites data in the HDD 18(a2 in FIG. 2). After the data is so rewritten, the HDD/SSD driver 120notifies the host system of the completion of the data rewritingprocess. The data rewriting process performed if the data to rewriteexists in neither the L1 cache area 201 nor the SSD 19 includes writingnew data (i.e., replacing invalid data with valid data).

The HDD/SSD driver 120 thus operates in the WB mode or the WT mode inaccordance with the parameter. One driver, i.e., HDD/SSD driver 120, cantherefore cope with both a system in which data should better be writein the WB more and a system in which data should better be write in theWT mode.

Further, in the WT mode, the HDD/SSD driver 120 may not rewrite the datato update, if stored in the SSD 19, but may instead invalidate the datastored in the SSD 19. This operating mode shall be called “WI mode.” Ifthe WI mode is selected in accordance with the parameter, the HDD/SSDdriver 120 can operate more efficiently if the SSD 19 has a lowerdata-rewriting performance than the HDD 18.

(Process of Managing Data)

As described above, the HDD/SSD driver 120 manages the L1 cache area 201reserved in the main memory 13, in units of blocks, and writes and readsdata into and from the HDD 18 in units of blocks. How the HDD/SSD driver120 manages data will be now explained.

In the WB mode, a write request coming from the host system does notalways request that data be written in units of blocks. If one block iscomposed of 128 sectors, it must be determined which sectors hold validdata and which sectors hold the data (Dirty) to be written to the HDD18. To this end, the HDD/SSD driver 120 provides an existent-sector bitmap (“A” of FIG. 3) and a dirty-sector bit map (“B” of FIG. 3), each forthe blocks of the L1 cache area 201 in the main memory 13 and the SSD 19(part of the SSD 19 used as a cache for the HDD 18). The existent-sectorbit map and the dirty-sector bit map are provided as management datamanaged in the management data storage area 202.

The existent-sector bit map is management data representing which sectorin the associated block is valid. The dirty-sector bit map is managementdata representing which sector in the associated block is dirty. Thesetwo sector bit maps hold bits, as shown in FIG. 4, each representing thestate of each sector in the block. Hence, if one block is composed of128 sectors, either sector bit map holds 128 bits, or 16 bytes, for eachblock.

These two bit maps are managed. The HDD/SSD driver 120 can therefore usethe L1 cache area 201 reserved in the main memory 13 and the SSD 19,thereby appropriately writing or reading data into and from the HDD 18.

As described above, the dirty-sector bit map is provided to determinewhich sector is dirty in each block. Therefore, a large storage capacityis required, which is (number of blocks in the L1 cache area 201+thenumber of blocks in the SSD 19)×16 bytes. In view of this, the HDD/SSDdriver 120 may not provide the dirty-sector bit map, and may provide aDirty flag and a Partial flag (both shown in FIG. 5) for each block inthe L1 cache area 201 of the main memory 13 and for each block in theSSD 19 used as cache for the HDD 18. The Dirty flag indicates whetherthe data (Dirty) to be written to the HDD 18 exists in the block. ThePartial flag indicates whether the data (Dirty) existing in the block ispartial or not. These flags are provided as management data managed inthe management data storage area 202 reserved in the main memory 13.

The dirty flag is true if the data (Dirty) to be written to the HDD 18exists in the block, and is false if the data (Dirty) to be written tothe HDD 18 does not exist in the block. The Partial flag is true if allsectors exist in the block, and is false if only some sectors exist inthe block. Since all sectors exist in the block if the Partial flag isfalse, the existent-sector bit map need not be referred to, in somecases.

(Nonvolatile Operation)

The HDD/SSD driver 120 performs a nonvolatile operation so that the dataaccumulated in the SSD 19 may be used even after the informationprocessing apparatus has been activated again. The nonvolatile operationis based on the assumption that the host system includes a function oftransmitting a shutdown notice to the HDD/SSD driver 120. Even aftertransmitting the shutdown notice to the HDD/SSD driver 120, the hostsystem may indeed issue a write request or a read request, but to theHDD/SSD driver 120 only. To perform the nonvolatile operation on theseconditions, the HDD/SSD driver 120 reserves a management data save area191 reserved in the SSD 19, for storing the management data controlledin the management data storage area 202 reserved in the main memory 13.

After receiving the shutdown notice, the HDD/SSD driver 120 operates inthe WT mode even if the WB mode is set, and starts a flush operation. Atthe time the flush operation is completed, the HDD/SSD driver 120guarantees that the write data remains neither in the L1 cache area 201of the main memory 13 nor in the SSD 19.

When the flush operation is completed, the HDD/SSD driver 120 stores themanagement data held in the management data storage area 202 reserved inthe main memory 13, into the management data save area 191 reserved inthe SSD 19. At this point, the HDD/SSD driver 120 needs to write anexistent-sector bit map, but no dirty data exists. Therefore, theHDD/SSD driver 120 need not write a dirty-sector bit map or a Dirtyflag/a Partial flag.

After writing the management data from the management data storage area202 reserved in the main memory 13 into the management data save area191 reserved in the SSD 19, the HDD/SSD driver 120 operates, notchanging the management data and not causing data contradiction betweenthe HDD 18 and the SSD 19. That is, the HDD/SSD driver 120 rewrites datain both the HDD 18 and the SSD 19 when it receives a write request fromthe host system and the SSD 19 holds the data to update, and does notperform the accumulation (learning) of the read data in the SSD 19 inresponse to a read request.

After the information processing apparatus is activated again, theHDD/SSD driver 120 loads the management data stored in the managementdata save area 191 reserved in the SSD 19, into the management datastorage area 202 reserved in the main memory 13, without initializingthe management data. (This is because the main memory 13, which has theL1 cache area 201, is volatile.) The HDD/SSD driver 120 initializes onlythe management data about the L1 cache area 201.

By performing the nonvolatile operation described above, the HDD/SSDdriver 120 makes it possible to use the data accumulated in the SSD 19,even after the information processing apparatus has been activatedagain, and can guarantee that the write data remains neither in the L1cache area 201 of the main memory 13 nor in the SSD 19. In most systems,another module (capable of accessing the HDD 18), such as the BIOS 17,operates before the HDD/SSD driver 120 operates. If there remains datanot written into the HDD 18, the module (e.g., BIOS 17) must have afunction of controlling the cache (i.e., the SSD 19 and the L1 cachearea 201 of the main memory 13). In the information processingapparatus, however, the BIOS 17 or the like need not have the functionof controlling the cache. This is because the HDD/SSD driver 120performs the nonvolatile operation, guaranteeing that the write dataremains neither in the L1 cache area 201 of the main memory 13 nor inthe SSD 19.

(Guarantee of Data in Nonvolatile Operation)

The HDD/SSD driver 120 includes a function, which will be described.This function is for determining whether the data accumulated in the SSD19 is consistent with the data stored in the HDD 19. If the HDD/SSDdriver 120 determines that the data accumulated in the SSD 19 is notconsistent with the data stored in the HDD 19, it will perform avolatile operation to destroy the data accumulated in the SSD 19.

To perform this function, the HDD/SSD driver 120 provides an Ownershipflag (shown in FIG. 6) in the management data save area 191 reserved inthe SSD 19. The Ownership flag has a value “Driver” or the other value“None.” The value “Driver” indicates that the HDD/SSD driver 120 isoperating. The value “None” indicates that the HDD/SSD driver 120 is notoperating.

When the HDD/SSD driver 120 is loaded, the HDD/SSD driver 120 checks theOwnership flag. If the Ownership flag has the value “None,” the HDD/SSDdriver 120 determines that the data accumulated in the SSD 19 can beguaranteed as consistent with the data stored in the HDD 19, and thenloads the management data stored in the management data save area 191,from the SSD 19 to the L1 cache area 201 of the main memory 13. If theOwnership flag does not have the value “None,” the HDD/SSD driver 120determines that the data accumulated in the SSD 19 cannot be guaranteedas consistent with the data stored in the HDD 19, and then initializesthe management data and makes the SSD 19 volatile (invalid).

The rule of updating the Ownership flag will be explained. The HDD/SSDdriver 120 rewrites the Ownership flag to the value “Driver” before itstarts a cache operation. In order to save the management data after thecompletion of the cache operation in the nonvolatile operation, theHDD/SSD driver 120 rewrites the Ownership flag to the value “None.”

The data cannot be guaranteed as consistent with the data stored in theHDD 19 if the power-supply interruption, a clash or a hang-up occurswhile the data information apparatus is operating. Nonetheless, thereliability of the data can be raised because the HDD/SSD driver 120uses the data accumulated in the SSD 19 only if the data consistency canbe guaranteed by using the Ownership flag as described above.

As described above, the HDD/SSD driver 120 alone guarantees the data inthe nonvolatile operation. Nevertheless, another module (i.e., BIOS 17,here) capable of accessing the HDD 18 before the HDD/SSD driver 120starts operating may have a minimal cache controlling function toperform the nonvolatile operation as described below, even if the modulehas written data into the HDD 18.

In this case, the Ownership flag can have a third value “BIOS,” whichindicates that the BIOS 17 is operating. Hence, the value “None”indicates that neither the BIOS 17 nor the HDD/SSD driver 120 isoperating. Note that a write trace area is reserved in the managementdata save area 191.

When activated, the BIOS 17 examines the Ownership flag. If theOwnership flag has the value “None,” the BIOS 17 determines that thedata consistency can be guaranteed and then rewrites the Ownership flagto the value “BIOS.” If the Ownership flag has not the value “None,” theBIOS 17 determines that the data consistency cannot be guaranteed. Inthis case, the BIOS 17 leaves the Ownership flag not rewritten.

If the BIOS 17 finds that the data consistency can be guaranteed, ittherefore changes the Ownership flag to the value “BIOS.” In this case,the BIOS 17 accumulates write commands for writing data into the HDD 18,in units of blocks as shown in FIG. 7, in the write trace area reservedin the management data save area 191, when it writes data into the HDD18. Since the write command is written in units of blocks, no requestlength is required. That is, the logical block addresses (LBAs) of therespective data blocks are used, thereby reducing the amount of tracedata. If the write trace area overflows, the BIOS 17 first stopsaccumulating the write commands, and then rewrites the Ownership flag tothe value “None.”

On the other hand, the HDD/SSD driver 120 examines the Ownership flag,when it is loaded. If the Ownership flag has the value “BIOS,” theHDD/SSD driver 120 finds that the data consistency can be guaranteed.The HDD/SSD driver 120 then loads the management data from themanagement data save area 191 reserved in the SSD 19 into the managementdata storage area 202 reserved in the main memory 13. Further, theHDD/SSD driver 120 refers to the write trace area reserved in themanagement data save area 191 of the SSD 19. If the data to updateexists in the SSD 19, the HDD/SSD driver 120 invalidates this data. Ifthe Ownership flag has not the value “BIOS,” HDD/SSD driver 120determines that the data consistency cannot be guaranteed. In this case,the HDD/SSD driver 120 initializes the management data and makes the SSD19 volatile (invalid).

Then, the HDD/SSD driver 120 rewrites the Ownership flag to the value“None” when the management data is stored after the completion of theflush operation during the above-mentioned nonvolatile operation.

The nonvolatile operation can thus be performed even if the other modulewrites data into the HDD 18, only by adding a minimal function to theother module capable of accessing the HDD 18 (e.g., BIOS 17) before theHDD/SSD driver 120 starts operating.

The data consistency cannot be guaranteed (i) if data in the HDD 18 isrewritten not via the HDD/SSD driver 120, for example, the data isrewritten by a program booted from the CD-ROM set in the ODD 20, (ii) ifthe HDD 18 or the SSD 19 are replaced by others, or (iii) if the HDD 18or SSD 19 is removed from the information processing apparatus, data inthe HDD 18 or SSD 19 is then updated in any other information processingapparatus and the HDD 18 or SSD 19 is incorporated back into theinformation processing apparatus. The HDD/SSD driver 120 has a functionof determining, in such an event, that the data consistency cannot beguaranteed. This function that the HDD/SSD driver 120 has will bedescribed below.

Assume that the HDD 18 and the SSD 19 used in the information processingapparatus has two functions. One function is to hold data pertaining toindividuals (hereinafter referred to as “individual data”) and providethe same in response to a request. The other function is to hold thedata representing the number of times the power switch has been closedand provide this data in response to a request. It is also assumed thatthe number of times the power switch has been closed is updated whendata is written not through the HDD/SSD driver 120. It is furtherassumed that the information processing apparatus can incorporate aplurality of HDDs 18.

To implement these functions, the HDD/SSD driver 120 reserves an area inthe management data save area 191 of the SSD 19. In this area, theindividual data is recorded, together with the number of times the powerswitch has been closed, as shown in FIG. 8.

The HDD/SSD driver 120 acquires the individual data and the number oftimes the power switch has been closed from the SSD 19 and the HDD 18,respectively, at the time of loading. Then, the HDD/SSD driver 120compares the individual data about the SSD 19 and HDD 18, stored in thearea reserved in the management data save area 191 of the SSD 19, withthe number of times the power switch has been closed. The individualdata acquired from the SSD 19 may differ from the individual datarecorded in the management data save area 191, or the number of timesthe power switch has been closed, recorded in the management data savearea 191, may not be smaller by one than the number now acquired fromthe SSD 19. In this case, the HDD/SSD driver 120 determines that thedata consistency cannot be guaranteed, initializes the management data,and makes the SSD 19 volatile (invalid).

The individual data acquired from the HDD 18 may differ from theindividual data recorded in the management data save area 191, or thenumber of times the power switch has been closed, recorded in themanagement data save area 191, may not be smaller by one than the numbernow acquired from the HDD 18. If this is the case, the HDD/SSD driver120 determines that the data consistency cannot be guaranteed for theHDD 18, initializes the management data about the HDD 18, andinvalidates the management data about the HDD 18, which is stored in theSSD 19.

The HDD/SSD driver 120 writes the number of times the SSD 19 and HDD 18have been turned on, in the management data save area 191 of the SSD 19,when the management data is saved after the completion of the flushoperation during the above-mentioned nonvolatile operation.

Thus, the data consistency can be determined not to be guaranteed invarious cases where the data cannot be guaranteed as consistent with thedata stored in the HDD 19.

(Cache Control by BIOS)

Not only the HDD/SSD driver 120, but also the BIOS 17 may utilize thedata accumulated in the SSD 19. How the BIOS 17 utilizes the data willbe explained.

When activated, the BIOS 17 checks the data consistency by using notonly the Ownership flag, but also the individual data about the SSD 19and HDD 18 and the number of times the SSD 19 and HDD 18 have beenturned on (the power cycle counter). If the BIOS 17 determines that thedata consistency can be guaranteed, it rewrites the Ownership flag tothe value “BIOS.” If the BIOS 17 determines that the data consistencycannot be guaranteed, it leaves the Ownership flag not rewritten.

In the process of reading data, when data consistency is guaranteed, theBIOS 17 reads the read data from the SSD 19 if the data exists, in itsentirety, in the SSD 19. Otherwise, or if the data exists, in part, inthe SSD 19 or if the data does not exist at all in SSD 19, the BIOS 17reads data from the HDD 18. When data consistency is not guaranteed, theBIOS 17 reads the read data from the HDD 18 only.

In the process of writing data, the BIOS 17 writes data into the HDD 18only. When the data consistency is guaranteed, the BIOS 18 invalidatesdata to update, if any, in the SSD 19.

If the BIOS 17 operates as described above, write commands for writingdata need not be recorded, as shown in FIG. 7, in the write trace areareserved in the management data save area 191 of the SSD 19.

This additional simple function enables the BIOS 17 to utilize the dataaccumulated in the SSD 19, thereby to shorten the activation time. Ifthe data to update exists in the SSD 19 at the time of writing data, theBIOS 17 may write the data into both the HDD 18 and the SSD 19. Ingeneral, the BIOS 17 cannot operate to write data into both the HDD 18and the SSD 19 in parallel, so it is therefore disadvantageous in termsof ability. In view of this, the BIOS 17 may be a module able to writedata into both the HDD 18 and the SSD 19 in parallel. In this case, datacan be written into not only the HDD 18, but also the SSD 19.

If the BIOS 17 also utilizes the data accumulated in the SSD 19, it mustrefer to the existent-sector bit map in order to determine whether alldata to read exists in the SSD 19. In view of the limited ability of theBIOS 17, it is too much for the BIOS 17 to refer to the existent-sectorbit map. A technique that enables the BIOS 17 to determine whether alldata to read exists in the SSD 19, without the necessity of referring tothe existent-sector bit map, will be explained below.

When the HDD/SSD driver 120 stores the management data after thecompletion of the flush operation during the above-mentioned nonvolatileoperation, the HDD/SSD driver 120 invalidates block of the SSD 19 forwhich the Partial flag is true, indicating that some sectors exist inthe block. Any block (i.e., Partial block) holding a part of effectivedata is thereby expelled from the SSD 19 after the shutdown. This makesit easier to determine whether all data to read exists in the SSD 19.Moreover, the existent-sector bit map need not be written since thePartial block has been expelled at the time of the shutdown.

If the Partial block is invalidated as described above when themanagement data is saved after the completion of the flush operationduring the above-mentioned nonvolatile operation, the hit rate inreading data after the management data has been stored will decrease. Atechnique will be explained, which facilitates determining whether allread data exists in the SSD 19, without decreasing the hit rate afterthe management data has been stored.

After the completion of the flush operation during the above-mentionednonvolatile operation, the HDD/SSD driver 120 saves the management data,regardless of the Partial flag. The BIOS 17 reads data from the SSD 19if all the data exists in the SSD 19 and if the Partial flag is false(that is, all sectors exist in the block). When activated, the HDD/SSDdriver 120 invalidates any block for which the Partial flag is true.This sequence also makes it unnecessary to write the existent-sector bitmap at the time of saving the management data.

(High-Speed Boot)

The data used to achieve boot in any information processing apparatus isread, every time from the same area in most cases. The informationprocessing apparatus according to this embodiment uses a technique ofachieving boot at high speed. This technique will be described below.

To achieve the high-speed boot, the HDD/SSD driver 120 provides a Pinflag (shown in FIG. 9) for each block, in both the L1 cache area 201 ofthe main memory 13 and that part of the SSD 19, which is used as a cachefor the HDD 18. The Pin flag indicates that the data has been used toachieve the boot.

The BIOS 17 sets the Pin flag associated with the block if the read dataexists in the SSD 19. If the read data does not exist in the SSD 19, theBIOS 17 accumulates the identifier and block LBA of the HDD 19 in thetrace area reserved in the management data save area 191 of the SSD 19.

In this case, software is provided as one of the various applicationprograms 130, which operates when the OS 110 is activated. When thissoftware starts operating, it transmits an activation completion noticeto the HDD/SSD driver 120.

When the HDD/SSD driver 120 is activated or when it receives theactivation completion notice, it reads data from the HDD 18 into the SSD19 and sets the Pin flag associated with the block of the SSD 19, byreferring to the trace the BIOS 17 has accumulated in the managementdata save area 191 of the SSD 19. If the data to read until theactivation completion notice arrives exists in the L1 cache area 201 ofthe main memory 13 or in the SSD 19, the HDD/SSD driver 120 sets the Pinflag associated with the block. If the data to read does not exist inthe SSD 19, the HDD/SSD driver 120 reads the data from the HDD 18 intothe SSD 19 and then sets the Pin flag associated with the block of theSSD 19.

Thereafter, the HDD/SSD driver 120 utilizes the L1 cache area 201 of themain memory 13 or the SSD 19, writing data to the HDD 18 or reading datafrom the HDD 18, as requested by the host system. Thus, the HDD/SSDdriver 120 exchanges data in the L1 cache area 201 of the main memory 13or the SSD 19, so that the data accessed last may be accumulated beforethe data accessed previously. At this point, the HDD/SSD driver 120performs a control not to invalidate the data in the SSD 19, for whichthe Pin flag is set (even if the data has been accessed a long timebefore).

That is, the hit rate in reading data stored in the SSD 19 at the timeof the booting is increased, because the data used to achieve the bootis read from the same area in most cases. This helps to accomplish theboot at high speed.

When the HDD/SSD driver 120 saves the management data in the managementdata save area 191 of the SSD 19 at the time of the shutdown, it resetsall Ping flags and then starts writing the management data. All Pingflags are reset at the time of the shutdown, because every time the bootis achieved, the learning of the read data must be performed for thenext boot. As a result, the boot at high speed can be sufficientlyaccomplished even if the data area used to achieve the boot is changedto another.

A write (rewrite) request may be made to write the data for which thePin flag is set. A method of coping with this case will be explained.

As described above, the data for which the Pin flag is set has a highpossibility of being read at the next boot. However, this possibility islow, if a write request is made for the data. In this case, the BIOS 17and the HDD/SSD driver 120 reset the Pin flag for the data.

This is because even the data used in the boot has a low possibility ofbeing read at the next boot. In view of this, the Pin flag for such datais reset, invalidating the data as needed. The area for achieving theboot can therefore be used for other data. This increases the hit rate.

As described above, the data for which the Pin flag is set has a highpossibility of being read at the next boot. This is why the HDD/SSDdriver 120 performs a control so that the data accumulated in the SSD 19may not be invalidated. The data therefore remains in the SSD 19,inevitably reducing the storage capacity of the SSD 19 that is used as acache. The HDD/SSD driver 120 monitors the amount of data for which thePin flag is set. If the amount of data exceeds a preset value, theHDD/SSD driver 120 stops setting the Pin flag, thereby excluding thesubsequent data (used in the boot) as data to remain in the SSD 19. Thestorage capacity of the SSD 19 used as a cache therefore is limited,preventing a decrease in the cache hit rate.

(Option Process in Response to the Flush/Write FUA Request)

If a flush/write FUA request is strictly processed, the write-backoperation will be greatly impaired in terms of performance. Therefore,the HDD/SSD driver 120 performs an “option flush process” function inresponse to the flush/write FUA request. The “option flush process”function can be “enabled” or “disabled.” If the function is enabled, theHDD/SSD driver 120 will operate as described below.

In the write-through operation (WT mode or after the receipt of theshutdown notice in the WB mode), the HDD/SSD driver 120 strictlyprocesses the flush/write FUA request, no matter whether the “optionflush process” function is set to “Enable” or “Disable.” If the “optionflush process” function is set to “Enable,” the HDD/SSD driver 120strictly processes the flush/write FUA request. That is, in response tothe flush FUA request, the HDD/SSD driver 120 writes all write dataexisting in the L1 cache area 201 of the main memory 13 and the SSD 19,which is not written yet, into the HDD 18. The HDD/SSD driver 120 thenissues a Flush request to the HDD 18. When the process response to theissued flush request is finished, the HDD/SSD driver 120 notifies thehost system of the completion of the process response to the flush FUArequest. In response to the write FUA request, the HDD/SSD driver 120operates as described above.

The “option flush process” function may be set to “Disable” during thewrite-back operation. If this is the case, the HDD/SSD driver 120 doesnothing in response to the flush FUA request, and transmits a completionnotice to the host system. In response to the write FUA request, theHDD/SSD driver 120 processes this request as an ordinary write request(that is, not as a write FUA request), and transmits a completion noticeto the host system. In this case, the HDD/SSD driver 120 starts theflush operation at one or both of the following events. One event is thelapse of a prescribed time from the previous flush operation. The otherevent is that the number of the blocks (Dirty blocks), each containingdata not written yet from the SSD 19 into the HDD 18, exceeds apredetermined value. The HDD/SSD driver 120 flushes all Dirty blockswhen it starts the flush operation.

Having the “option flush process” function, which can be set to either“Enable” or “Disable,” the HDD/SSD driver 120 can work well for both auser who wants to preserve the data at the expense of the performance,and a user who wants to maintain the performance at the expense of thedata preservation. In addition, the operating time of the HDD 18 can beshortened, reducing the power consumption, because the data not writtenyet into the HDD 18 is flushed altogether.

(Data Merging Process)

As indicated above, the HDD/SSD driver 120 reserves the L1 cache area201 in the main memory 13, between the user buffer 250, on the one hand,and the HDD 18 and SSD 19, on the other. Further, the HDD/SSD driver 120manages the data stored in the L1 cache area 201, in units of blocks.The HDD/SSD driver 120 includes a function of merging the data in the L1cache area 201 or SSD 19 with the data in the HDD 18 at high efficiency.This function will be explained below.

The data in the L1 cache area 201 or SSD 19 must be merged with the datain the HDD 18 if a part of the read data is stored in the L1 cache area201 or if the read data is not stored in the L1 cache area 201 and isstored in part in the SSD 19. Generally, data is read from a pluralityof areas reserved in the HDD 18, and a plurality of read requests mustbe issued to the HDD 18. Therefore, a plurality of read requests must beissued to the SSD 19, too, in order to merge the data in the SSD 19 withthe data in the HDD 18. However, if a plurality of read requests areissued, the overhead will increase.

In order to prevent such an overhead increase, the HDD/SSD driver 120first reserves a merge buffer 203 in the main memory 13. The mergebuffer 203 has the same size as the block size. One or more mergebuffers may be reserved in the main memory 13, each used under exclusivecontrol. Alternatively, a plurality of merge buffers 203 may bereserved, each for one block in the L1 cache area 201.

To merge the data stored in the L1 cache area 201 with the data storedin the HDD 18, the HDD/SSD driver 120 reads data, in a minimal amountnecessary, from the HDD 18 into a merge buffer 203. As shown in FIG. 10,the “minimal amount necessary” ranges from the head sector (lackingvalid data) to the tail sector (lacking valid data), in one block storedin the L1 cache area 201. After reading this amount of data from the HDD18 into a merge buffer 203, the HDD/SSD driver 120 copies the datalacking in the L1 cache area 201, from the merge buffer 203.

To merge the data stored in the SSD 19 with the data stored in the HDD18, the HDD/SSD driver 120 reads data, in a minimal amount necessary,from the SSD 19 into the L1 cache area 201, and reads data, in a minimalamount necessary, from the HDD 18 into a merge buffer 203. After readingthese amounts of data from the SSD 19 and the HDD 18, respectively, theHDD/SSD driver 120 copies the data lacking in the L1 cache area 201,from the merge buffer 203.

The merge buffers 203 can be utilized in the flush operation, too.During the flush operation, data is written into the HDD 18, exclusivelyfrom the L1 cache area 201. The valid data in the L1 cache area 201 maybe dispersed and may ultimately be flushed. If this is the case, aplurality of write requests must be issued to the HDD 18, inevitablyincreasing the overhead. If the valid data in the L1 cache area 201 isdispersed, the HDD/SSD driver 120 reads data, in a minimal amountnecessary, from the HDD 18 into a merge buffer 203. After reading thisamount of data from the HDD 18 into the merge buffer 203 and mergingthis data into the L1 cache area 201, the HDD/SSD driver 120 finisheswriting data into the HDD 18 by issuing one write request.

(Page Control)

The function the HDD/SSD driver 120 has to write data at high efficiencywill be described below.

The SSD 19, which is a nonvolatile cache (NVC), can read and write datain units of sectors. In the SSD 19, however, the data is managed inunits of pages in most cases. Data not mounting to one page is writtenin three steps. First, the present data is read in units of pages. Then,each page is merged with the data to write. Finally, the resulting datais written in units of pages. Inevitably, the data is written at a lowerspeed than in the case it is written in units of pages. Therefore, theHDD/SSD driver 120 performs a control of the data writing from the L1cache area 201 into the SSD 19, so that the data written may have a sizemultiples of page size as measured from the page boundary. The datarepresenting the page size of the SSD 19 can be acquired by two methods.In one method, the HDD/SSD driver 120 acquires the data from the SSD 19.In the other method, the data is given, as a set of data item (e.g.,parameter), to the HDD/SSD driver 120.

In order to write the data having a size multiples of page size asmeasured from the page boundary, from the L1 cache area 201 into the SSD19, the HDD/SSD driver 120 allocates the storage area of the SSD 19 inunits of pages and sets the block size as a multiple of the page size.

(Set Associative)

In order to increase the cache retrieval speed, the HDD/SSD driver 120can use a set associative method to manage the data stored in the L1cache area 201 and SSD 19 (used as cache for the HDD 18). Morespecifically, the HDD/SSD driver 120 manages such a table as shown inFIG. 11, in the management data storage area 202 reserved in the mainmemory 13, for both the L1 cache area 201 and the SSD 19. Of the LBAindicating a block, some lower n bits are used as “Index” representingthe number of entries in the table. The table is controlled so that dataequivalent to the maximal number of Ways may be accumulated for anyblock that has “Index.”

Using the set associative method, the HDD/SSD driver 120 may monitor,for each “Index,” the number of data items for which Pin flags are set,thereby to prevent the number of such data items from exceeding a valueprescribed for the “Index.”

Moreover, using the set associative method, the HDD/SSD driver 120 maystart the flush operation when the number of the Dirty blocks of any“Index” exceeds a predetermined value, if the “option flush process”function is set to “Disable.”

As has been described, the SSD 19 is used as a cache for the HDD 18 inthe information processing apparatus. In order to access the HDD 18faster, the HDD/SSD driver 120 that controls the HDD 18 and the SSD 19reserves the L1 cache area 201 in the main memory 13, between the userbuffer 250, on the one hand, and the HDD 18 and SSD 19, on the other,and manages the data stored in the L1 cache area 201, in units ofblocks. The speed and efficiency of the data transfer between the HDD 18and the SSD 19 is thereby increased.

The various modules of the systems described herein can be implementedas software applications, hardware and/or software modules, orcomponents on one or more computers, such as servers. While the variousmodules are illustrated separately, they may share some or all of thesame underlying logic or code.

While certain embodiments have been described, these embodiments havebeen presented by way of example only, and are not intended to limit thescope of the inventions. Indeed, the novel embodiments described hereinmay be embodied in a variety of other forms; furthermore, variousomissions, substitutions and changes in the form of the embodimentsdescribed herein may be made without departing from the spirit of theinventions. The accompanying claims and their equivalents are intendedto cover such forms or modifications as would fall within the scope andspirit of the inventions.

What is claimed is:
 1. An information processing apparatus comprising: amemory comprising a buffer area; a first external storage separate fromthe memory; a second external storage separate from the memory; and adriver configured to control the first and second external storages,wherein the driver comprises a cache reservation module configured toreserve a cache area in the memory, the cache area being logicallybetween the buffer area and the first external storage and between thebuffer area and the second external storage, the driver being configuredto use the cache area, secured on the memory by the cache reservationmodule, as a primary cache for the second external storage and a cachefor the first external storage, and uses part or the entire firstexternal storage as a secondary cache for the second external storage,the buffer area being reserved in order to transfer data between thedriver and a host system that requests for data writing and datareading.
 2. A driver stored in a non-transitory computer readable mediumwhich operates in an information processing apparatus comprising amemory comprising a buffer area which is reserved in order to transferdata between the driver and a host system that requests for data writingand data reading, a first external storage and a second externalstorage, the driver being configured to control the first and secondexternal storages, the driver comprising: a cache reservation moduleconfigured to reserve a cache area in the memory, the cache area beinglogically between the buffer area and the first external storage andbetween the buffer area and the second external storage, the driverbeing configured to use the cache area, secured on the memory by thecache reservation module, as a primary cache for the second externalstorage and as a cache for the first external storage, and to use partor the entire first external storage as a secondary cache for the secondexternal storage.